var _ = require("lodash");
var path = require("path");
var dao = require(path.join(process.cwd(), "dao/DAO"));
var attributeDao = require(path.join(process.cwd(), "dao/AttributeDAO"));

/**
 * 获取属性列表
 *
 * @param  {[type]}   cat_id 分类ID
 * @param  {[type]}   sel    类型 // only:输入框(唯一)  many:后台下拉列表/前台单选框
 * @param  {Function} cb     回调函数
 */
module.exports.getAttributes = function (cat_id, sel, cb) {
  attributeDao.list(cat_id, sel, function (err, attributes) {
    if (err) return cb("获取失败");
    cb(null, attributes);
  });
};

/**
 * 创建参数
 *
 * @param  {[type]}   info 参数信息
 * @param  {Function} cb   回调函数
 */
module.exports.createAttribute = function (info, cb) {
  dao.create("AttributeModel", info, function (err, attribute) {
    if (err) return cb("创建失败");
    cb(null, attribute);
  });
};

/**
 * 更新参数
 *
 * @param  {[type]}   catId  分类ID
 * @param  {[type]}   attrId 属性ID
 * @param  {[type]}   info   更新内容
 * @param  {Function} cb     回调函数
 */
module.exports.updateAttribute = function (attrId, info, cb) {
  dao.update("AttributeModel", attrId, info, function (err, newAttr) {
    if (err) return cb(err);
    cb(null, _.omit(newAttr, "delete_time"));
  });
};

/**
 * 删除参数
 *
 * @param  {[type]}   attrId 参数ID
 * @param  {Function} cb     回调函数
 */
module.exports.deleteAttribute = function (attrId, cb) {
  dao.update(
    "AttributeModel",
    attrId,
    { delete_time: parseInt(Date.now() / 1000) },
    function (err, newAttr) {
      console.log(newAttr);
      if (err) return cb("删除失败");
      cb(null, newAttr);
    }
  );
};

module.exports.attributeById = function (attrId, cb) {
  dao.show("AttributeModel", attrId, function (err, attr) {
    if (err) return cb(err);
    cb(null, _.omit(attr, "delete_time"));
  });
};
